package decoratorPattern;



import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @program: course
 * @author: lsn
 * @create: 2024-04-18 16:40
 * @description: 装饰模式测试类
 */
public class ApiTest {

    @Test
    public void test() {
        // 创建基础通知器对象
        Notifier notifier = new BaseNotifier();
        // 添加短信通知功能
        notifier = new SMSNotifierDecorator(notifier);
        // 添加微信通知功能
        notifier = new WeChatNotifierDecorator(notifier);
        // 添加QQ通知功能
        notifier = new QQNotifierDecorator(notifier);
        // 发送通知
        notifier.send("你已成功购买商品，订单号为：0001");

    }

    @Test
    public void test1() {
        // 创建基础通知器对象
        Notifier notifier = new BaseNotifier();
        // 添加短信通知功能
        Notifier notifier1 = new SMSNotifierDecorator(notifier);
        // 添加微信通知功能
        Notifier notifier2 = new WeChatNotifierDecorator(notifier1);
        // 添加QQ通知功能
        Notifier notifier3 = new QQNotifierDecorator(notifier2);
        // 发送通知
        notifier3.send("你已成功购买商品，订单号为：0001");

    }
    @Test
    public void test2(){
        List<String> words = Arrays.asList("Java", "Stream", "Decorator", "Pattern");

        // 使用装饰模式
        List<String> result = words.stream()
                .filter(word -> word.length() > 4) // 装饰器1: 过滤长度大于4的单词
                .map(String::toUpperCase)           // 装饰器2: 将单词转换为大写
                .collect(Collectors.toList());

        System.out.println(result);
    }
}

